PostgreSQL ডেটাবেস সিস্টেমে Authentication এবং Authorization হল নিরাপত্তার দুটি গুরুত্বপূর্ণ স্তর। Authentication হল ব্যবহারকারীকে যাচাই করার প্রক্রিয়া এবং Authorization হল নির্ধারণ করা যে, কোন ব্যবহারকারী কোন সম্পদ বা কার্যকলাপে অ্যাক্সেস করতে পারবে। এই দুটি স্তরের মাধ্যমে ডেটাবেস সিস্টেমের নিরাপত্তা এবং নিয়ন্ত্রণ নিশ্চিত করা হয়।
1. Authentication (অথেন্টিকেশন)
Authentication হল একটি প্রক্রিয়া যার মাধ্যমে PostgreSQL ডেটাবেস নিশ্চিত করে যে ব্যবহারকারীটি সঠিক এবং বৈধ কিনা। এটি সাধারণত ইউজারনেম এবং পাসওয়ার্ড দ্বারা পরিচালিত হয়, তবে PostgreSQL বিভিন্ন ধরনের অথেন্টিকেশন মেথড সাপোর্ট করে।
a. PostgreSQL এ Authentication Methods
Password Authentication
- এটি সবচেয়ে সাধারণ অথেন্টিকেশন পদ্ধতি, যেখানে ব্যবহারকারী একটি ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন করেন।
- এটি
md5বাscram-sha-256পদ্ধতিতে পাসওয়ার্ড সংরক্ষণ করতে পারে।
উদাহরণ:
pg_hba.confফাইলে এভাবে কনফিগার করা হয়:host all all 127.0.0.1/32 md5Trust Authentication
- এই পদ্ধতিতে PostgreSQL শুধুমাত্র ক্লায়েন্টের আইপি অ্যাড্রেস এবং অন্যান্য তথ্য পরীক্ষা করে। যদি এটি সঠিক হয়, তাহলে কোনো পাসওয়ার্ড ছাড়াই অ্যাক্সেস দেওয়া হয়।
- সাধারণত নিরাপত্তাহীন এবং এটি সাধারণত ডেভেলপমেন্ট পরিবেশে ব্যবহৃত হয়।
উদাহরণ:
host all all 192.168.1.0/24 trustPeer Authentication
- এটি UNIX সিস্টেমে ব্যবহার করা হয়, যেখানে পাসওয়ার্ড বা অন্য কোনো তথ্যের পরিবর্তে, ব্যবহারকারীর সিস্টেম ইউজারকে পরীক্ষা করা হয়। এটি সাধারণত লিনাক্সে ব্যবহৃত হয় যেখানে PostgreSQL ইউজারের সাথে সিস্টেম ইউজারের নাম মেলানো হয়।
উদাহরণ:
local all all peerIdent Authentication
- এটি সিস্টেমের মাধ্যমে ইউজার যাচাই করতে ব্যবহৃত হয়। এটি ইন্টারনেট অ্যাড্রেস এবং লগইন ইউজারের সাথে ব্যবহারকারী নাম তুলনা করে। এটি ইন্টারনেট বা LAN এর মধ্যে নিরাপত্তা সুনিশ্চিত করার জন্য ব্যবহৃত হয়।
উদাহরণ:
host all all 192.168.1.0/24 identGSSAPI, SSPI (Kerberos) Authentication
- Kerberos প্রোটোকলের মাধ্যমে শক্তিশালী অথেন্টিকেশন নিশ্চিত করা হয়, যেখানে ইউজার টোকেন এবং প্রমাণীকৃত সেশন ব্যবহৃত হয়।
- এটি সাধারণত ইনট্রানেট অ্যাপ্লিকেশন বা বড় কম্পিউটার নেটওয়ার্কে ব্যবহৃত হয়।
উদাহরণ:
host all all 192.168.1.0/24 gssLDAP Authentication
- LDAP সার্ভার ব্যবহার করে ইউজারের অথেন্টিকেশন করা যায়, যেখানে ইউজার নাম এবং পাসওয়ার্ড LDAP ডাটাবেসে যাচাই করা হয়।
উদাহরণ:
host all all 192.168.1.0/24 ldap
2. Authorization (অথরাইজেশন)
Authorization হল সেই প্রক্রিয়া যার মাধ্যমে PostgreSQL নির্ধারণ করে যে, একটি অথেন্টিকেটেড ইউজার কোন ডেটাবেস রিসোর্সে অ্যাক্সেস পাবে। এটি ইউজারের অধিকার এবং অনুমতির মাধ্যমে নিয়ন্ত্রণ করা হয়, যা Roles (ভূমিকা) এবং Privileges (অধিকার) এর মাধ্যমে কনফিগার করা হয়।
a. Roles in PostgreSQL
PostgreSQL এ Roles ব্যবহার করা হয় ডেটাবেসের ইউজারের অনুমতি নিয়ন্ত্রণ করতে। প্রতিটি Role একটি বা একাধিক অনুমতি ধারণ করতে পারে। Role দুইটি ধরনের হতে পারে:
- Login Role: একটি লগিনযোগ্য ব্যবহারকারী (যেমন ইউজার)।
- Group Role: এটি অন্য রোলকে গ্রুপ করার জন্য ব্যবহৃত হয়, যা একাধিক ইউজারকে একযোগে একাধিক অধিকার দিতে সাহায্য করে।
Role তৈরি করা:
CREATE ROLE admin LOGIN PASSWORD 'adminpassword';
Role কে Superuser দেওয়া:
ALTER ROLE admin WITH SUPERUSER;
b. Privileges in PostgreSQL
PostgreSQL এ Privileges ব্যবহার করে নির্দিষ্ট টেবিল, ভিউ, বা অন্যান্য রিসোর্সের উপর কুয়েরি পরিচালনার অনুমতি নিয়ন্ত্রণ করা হয়।
- SELECT: ডেটাবেস থেকে ডেটা নির্বাচন করার অনুমতি।
- INSERT: টেবিলে নতুন ডেটা সন্নিবেশ করার অনুমতি।
- UPDATE: টেবিলের বিদ্যমান ডেটা আপডেট করার অনুমতি।
- DELETE: টেবিল থেকে ডেটা মুছে ফেলার অনুমতি।
- ALL PRIVILEGES: সমস্ত ধরনের অধিকার প্রদান করা।
প্রিভিলেজ দেওয়া:
GRANT SELECT, INSERT ON students TO admin;
Role কে প্রিভিলেজ ফিরিয়ে নেওয়া:
REVOKE SELECT, INSERT ON students FROM admin;
c. Schema and Table-level Authorization
PostgreSQL এ আপনি টেবিল এবং স্কিমার উপর নির্দিষ্ট ভূমিকা এবং অনুমতি দিতে পারেন। উদাহরণস্বরূপ, নির্দিষ্ট একটি টেবিলের জন্য কেবলমাত্র রিড বা রাইট অনুমতি দেওয়া হতে পারে।
টেবিল-লেভেল প্রিভিলেজ:
GRANT SELECT, UPDATE ON students TO admin;
স্কিমা-লেভেল প্রিভিলেজ:
GRANT USAGE ON SCHEMA public TO admin;
d. REVOKE Privileges
আপনি যখন কোনো প্রিভিলেজ কাস্টম রোল থেকে ফিরিয়ে নিতে চান, তখন REVOKE কমান্ড ব্যবহার করতে পারেন।
REVOKE ALL PRIVILEGES ON TABLE students FROM admin;
3. pg_hba.conf কনফিগারেশন
PostgreSQL এর pg_hba.conf ফাইল হল Host-based Authentication কনফিগারেশন ফাইল, যা ডেটাবেস সার্ভারের সাথে সংযোগ করার জন্য ইউজারদের অনুমতি নিয়ন্ত্রণ করে। এটি ইউজারদের কীভাবে অথেন্টিকেট করা হবে এবং কোন IP থেকে তারা সংযোগ করতে পারবে, তা নিয়ন্ত্রণ করে।
pg_hba.conf ফাইলের কনফিগারেশন উদাহরণ:
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all 192.168.0.0/24 md5
local all all peer
এখানে:
md5: পাসওয়ার্ড অথেন্টিকেশন ব্যবহার করা হচ্ছে।peer: UNIX সিস্টেম ইউজারনেম অনুযায়ী অথেন্টিকেশন করা হচ্ছে।127.0.0.1/32: শুধু লোকালহোস্ট (localhost) থেকে সংযোগ অনুমতি।192.168.0.0/24: 192.168.0.0 থেকে 192.168.255.255 পর্যন্ত আইপি রেঞ্জ থেকে সংযোগ অনুমতি।
সারাংশ
PostgreSQL তে Authentication এবং Authorization হল ডেটাবেসের নিরাপত্তা কৌশল। Authentication ইউজার যাচাই করার প্রক্রিয়া, যা পাসওয়ার্ড, পিয়ার, বা অন্য প্রমাণীকরণ পদ্ধতি ব্যবহার করে। Authorization হল ইউজারের জন্য অনুমতি এবং ভূমিকা নির্ধারণ করা, যাতে ডেটাবেসের রিসোর্স এবং কার্যকলাপে অ্যাক্সেস নিয়ন্ত্রণ করা যায়। PostgreSQL বিভিন্ন ধরনের অথেন্টিকেশন পদ্ধতি এবং রোল-বেসড প্রিভিলেজ সিস্টেম সাপোর্ট করে, যা ডেটাবেস নিরাপত্তা নিশ্চিত করতে সহায়ক।
Read more